Amazon QuickSight の periodOverPeriod 関数のオフセット値を動的に変更できるか検証してみた
Amazon QuickSight の periodOverPeriod
関数シリーズを使って、n 日前(例:1 年前、1 か月前)との比較をする際に、n の値を動的に変更できるか検証しました。本記事ではその検証結果を紹介します。
検証結果
Amazon QuickSight の periodOverPeriod
関数シリーズを使用した完全な動的な日付比較は、現状では困難でした。パラメータを使用した外部から手動で調整や、sumIf
関数を使用した代替手法により、ある程度の柔軟性を持たせることは可能でした。
代替手法は以下のブログを参照ください。
背景
データ分析において、過去のデータと現在のデータを比較することは一般的で、特に前年同月比の確認は頻繁に行われます。QuickSight の periodOverPeriod
関数シリーズは、この比較を容易にするために用意されています。
比較する期間を固定値(例:1 年前、1 か月前)ではなく、動的に期間を変更したいというニーズがあります。そこで、periodOverPeriodLastValue
関数の期間指定を動的に変更可能かを検証しました。
periodOverPeriodLastValue
関数の例ですと、以下の計算フィールドは 1 か月前の値を表示します。この最後の 1 (オフセット値)を動的に変更可能かの検証です。
periodOverPeriodLastValue([値のフィールド], [日付フィールド], MONTH, 1)
検証内容と結果
1. 計算フィールドの利用
計算フィールドを使用して 1 ヶ月前の値を取得は可能です。しかし、オフセット値(例では 1)を動的に変更はできません。この部分は固定値である必要があります。
計算フィールドの設定画面です。periodOverPeriodLastValue
関数が使用され、オフセット値として固定の数値 "1" が入力されています。
オフセット値に計算フィールドを指定しようとすると、以下のようなエラーが発生します。
計算フィールドをオフセット値として使用できないことがわかりました。
2. パラメータの利用
次に、パラメータを使用して動的に値を変更する方法を試みました。パラメータ自体は設定可能でしたが、自動的に変更はできません。ユーザーがダッシュボード上でパラメータを手動で変更は可能ですが、データに基づいて自動的に値を変更はできません。
整数値のパラメータを作成し、デフォルト値として "1" を設定した例です。
作成したパラメータをオフセット値として使用すると、関数のエラーは発生しません。
パラメータのコントロール画面で "1" が入力されている場合、1 か月前の数値が表示されます。
"2" を入力すると 2 か月前の値を取得できます。
検証結果
パラメータを利用することでオフセット値を外部から変更可能でした。しかし、計算結果に基づいてパラメータの値を自動的に変更はできません。
都合が悪いケース
例えば、特定の 2 つの日付間の値を比較したい場合、その日付の差の数値を手動でパラメータに入力する必要がでてきます。これはユーザーフレンドリーではありませんね。
代替案
この制約を踏まえ、他の方法を検討しました。有効な代替案として、sumIf
関数を使用して動的な日付比較を実現する方法があります。
詳細については、以下の記事を参照してください。
sumIf
関数を使用することで、より柔軟な日付比較が可能になり、動的な期間設定にも対応できます。
まとめ
現状の QuickSight では、periodOverPeriod
関数を使用した完全に動的な日付比較は困難です。しかし、パラメータを使用した手動での調整や、sumIf
関数を使用した代替手法により、ある程度の柔軟性を持たせることが可能です。
おわりに
月や日付単位で任意の n 日前、n か月前と比較したいとなると、periodOverPeriod
関数シリーズは柔軟性に欠けて扱いづらかったです。sumIf
関数で自力比較関数を作る方法が柔軟性が高く使い勝手がよかったです。同じく悩める QuickSight ユーザーのお役に立てば幸いです。